K-Nearest Neighbors (KNN)

Machine Learning - মেশিন লার্নিং (Machine Learning)
291

K-Nearest Neighbors (KNN) হল একটি জনপ্রিয় এবং সহজে বোধগম্য সুপারভাইজড লার্নিং অ্যালগরিদম যা ক্লাসিফিকেশন এবং রিগ্রেশন উভয় কাজেই ব্যবহৃত হয়। এই অ্যালগরিদমটি ডেটা পয়েন্টের কাছাকাছি অবস্থান এবং তাদের বৈশিষ্ট্যের উপর ভিত্তি করে একটি সিদ্ধান্ত নেয়। এটি "নন-প্যারামেট্রিক" পদ্ধতিতে কাজ করে, যার মানে হলো, মডেলটি ডেটা থেকে নিজেই শিখে এবং কোন পূর্বনির্ধারিত ফাংশন বা অনুমান ব্যবহার করে না।

KNN কীভাবে কাজ করে:

KNN একটি নাবল ব্লান্ডিং (Instance-based) অ্যালগরিদম, যেখানে মডেলটি ডেটার প্রতিটি পয়েন্টের সাথে সম্পর্কিত নয়, বরং এটি কাজ করে যখন নতুন ডেটা পয়েন্ট আসবে। KNN একটি নির্দিষ্ট সংখ্যক নিকটতম neighbors (যার সংখ্যা k নির্ধারিত থাকে) খুঁজে বের করে এবং তাদের শ্রেণী বা মানের উপর ভিত্তি করে আউটপুট দেয়।

KNN কাজ করার পদ্ধতি:

  1. k এর মান নির্বাচন: প্রথমে, আপনি একটি প্যারামিটার k নির্বাচন করেন, যা আপনার পয়েন্টের জন্য নিকটতম কতগুলো পয়েন্টে (neighbors) নজর দেওয়া হবে তা নির্দেশ করে।
  2. ডিস্টেন্স মেট্রিক ব্যবহার: ডেটা পয়েন্টগুলির মধ্যে দূরত্ব মাপা হয়। সাধারণত, Euclidean Distance ব্যবহার করা হয়, কিন্তু অন্য মেট্রিকও ব্যবহার করা যেতে পারে।
    • Euclidean Distance হলো পয়েন্টগুলির মধ্যে সরলতম লাইন (straight line) দূরত্ব, যা দুইটি পয়েন্টের মধ্যে পরিমাপ করা হয়।
  3. নিকটতম neighbors নির্বাচন: নতুন ডেটা পয়েন্টের জন্য, KNN তার k নিকটতম neighbors খুঁজে বের করে, যাদের মধ্যে সবচেয়ে কাছাকাছি ডেটা পয়েন্ট থাকে।
  4. ক্লাসিফিকেশন (Classificaiton): যদি এটি ক্লাসিফিকেশন সমস্যা হয়, তবে এই k neighbors-এর মধ্যে যেই শ্রেণীটি সবচেয়ে বেশি হয়, সেই শ্রেণীটি নতুন পয়েন্টের জন্য পূর্বানুমান হিসেবে নির্বাচন করা হয়।
  5. রিগ্রেশন (Regression): যদি এটি রিগ্রেশন সমস্যা হয়, তবে k neighbors-এর মধ্যে গড় বা গড় মান নেওয়া হয় এবং সেটি নতুন পয়েন্টের আউটপুট হিসেবে ধরা হয়।

উদাহরণ:

ধরা যাক, আপনি একটি ডেটাসেট নিয়ে কাজ করছেন, যেখানে দুইটি বৈশিষ্ট্য আছে: "বয়স" এবং "আয়"। আপনার লক্ষ্য হল, নতুন একটি ব্যক্তির বৈশিষ্ট্য এর উপর ভিত্তি করে তার ব্রড ক্যাটাগরি (Income Group) চিহ্নিত করা।

  • যদি k=3 (তিনটি নিকটতম neighbors) হয়, তবে তিনটি সবচেয়ে কাছাকাছি ডেটা পয়েন্ট থেকে সবচেয়ে সাধারণ ক্যাটাগরি (যেমন, "নিম্ন আয়", "মধ্যম আয়", "উচ্চ আয়") নির্বাচন করা হবে।

KNN এর উপকারিতা:

  1. সহজ এবং সহজে ব্যাখ্যাযোগ্য: KNN একটি সরল অ্যালগরিদম, যা খুব সহজে বোঝা যায় এবং বাস্তবায়ন করা যায়।
  2. কোনো প্রাক-প্রশিক্ষণ (No training) প্রয়োজন: KNN ডেটা থেকে নিজে শিখে না, বরং নতুন ডেটা পয়েন্টের সাথে তুলনা করার মাধ্যমে কাজ করে, তাই এটি প্রশিক্ষণের জন্য দীর্ঘ সময় নেয় না।
  3. সামগ্রিকভাবে কার্যকর: ছোট বা মাঝারি আকারের ডেটাসেটের জন্য এটি কার্যকর হতে পারে।

KNN এর অসুবিধা:

  1. ডেটা নির্ভরতা: KNN নতুন পয়েন্টের জন্য ক্লাসিফিকেশন বা রিগ্রেশন করতে ডেটার পুরো ডেটাসেটের উপর নির্ভর করে, যা বড় ডেটাসেটের ক্ষেত্রে খুব ধীরগতি হতে পারে।
  2. স্কেলিং সমস্যা: যদি বৈশিষ্ট্যগুলো বিভিন্ন স্কেলে থাকে (যেমন, কিছু বৈশিষ্ট্যের মান ছোট এবং কিছু বৈশিষ্ট্যের মান বড়), তবে এটি সমস্যার সৃষ্টি করতে পারে। এ কারণে ফিচার স্কেলিং (যেমন, মিন-ম্যাক্স স্কেলিং বা স্ট্যান্ডার্ডাইজেশন) অত্যন্ত গুরুত্বপূর্ণ।
  3. কিছু অপ্রয়োজনীয় বৈশিষ্ট্য: যদি ডেটাতে অনেক অপ্রয়োজনীয় বৈশিষ্ট্য থাকে, তবে KNN এর কার্যকারিতা কমে যেতে পারে, কারণ এটি সমস্ত বৈশিষ্ট্যকেই সমান গুরুত্ব দেয়।

KNN এর প্যারামিটার:

  1. k (নাম্বার অফ নেবার্স): নতুন ডেটা পয়েন্টের জন্য কতগুলি নিকটতম neighbors ব্যবহৃত হবে তা নির্ধারণ করে। এটি ছোট হলে মডেল বেশি শব্দ (noise)-প্রবণ হতে পারে, এবং বড় হলে এটি মডেলটিকে আরো সাধারণ করে তুলবে।
  2. ডিস্টেন্স মেট্রিক: যেটি ডেটা পয়েন্টগুলির মধ্যে দূরত্ব পরিমাপ করার জন্য ব্যবহৃত হয়। সবচেয়ে সাধারণ হচ্ছে Euclidean Distance, তবে Manhattan Distance বা Cosine Similarity-ও ব্যবহার করা যেতে পারে।

KNN-এর উদাহরণ:

ধরা যাক, আমাদের কাছে একটি ডেটাসেট আছে যেখানে বিভিন্ন গ্রাহকের বয়স এবং আয়ের তথ্য দেওয়া আছে। আমাদের লক্ষ্য হল, এই তথ্য থেকে গ্রাহকের শ্রেণী চিহ্নিত করা।

বয়সআয়শ্রেণী
253000A
455000B
234000A
353500B

এখন, যদি নতুন এক গ্রাহক আসে যার বয়স 30 এবং আয় 4500, আমরা KNN ব্যবহার করে তার শ্রেণী অনুমান করতে পারি (যেমন, "A" বা "B")।

ধরা যাক, k=3। আমরা নতুন গ্রাহকের জন্য তিনটি নিকটতম neighbors খুঁজে বের করব এবং তাদের শ্রেণী অনুযায়ী চূড়ান্ত সিদ্ধান্ত নেব।


উপসংহার

KNN একটি সরল, শক্তিশালী এবং জনপ্রিয় অ্যালগরিদম যা অনেক ধরনের ক্লাসিফিকেশন এবং রিগ্রেশন সমস্যায় ব্যবহৃত হয়। তবে এটি বড় ডেটাসেটে ধীর হতে পারে এবং ডেটার স্কেলিং সঠিকভাবে না করলে ভুল ফলাফল দিতে পারে।

Content added By

KNN এর বেসিক ধারণা

309

K-Nearest Neighbors (KNN) হলো একটি সহজ এবং জনপ্রিয় সুপারভাইজড লার্নিং অ্যালগরিদম, যা ক্লাসিফিকেশন এবং রিগ্রেশন সমস্যার জন্য ব্যবহৃত হয়। এটি নন-প্যারামেট্রিক (Non-parametric) এবং লেজেন্ডারি (Lazy) মডেল হিসেবে পরিচিত, যার মানে হলো এটি প্রশিক্ষণের সময় কোনও মডেল তৈরি বা ফিট করে না, বরং প্রতিটি নতুন ইনপুট ডেটার জন্য সরাসরি প্রতিবেশীদের (neighbors) সাথে তুলনা করে ফলাফল নির্ধারণ করে।

KNN অ্যালগরিদমটির মূল ধারণা হলো, একটি নতুন ডেটা পয়েন্ট (Query Point) যদি কেবলমাত্র তার Kটি নিকটতম প্রতিবেশীর সাথে তুলনা করা হয়, তবে তার ক্লাস বা মান ঠিক করা সম্ভব। অর্থাৎ, প্রতিটি পয়েন্টের জন্য তার আশেপাশে থাকা নিকটতম পয়েন্টগুলোর সাহায্যে সিদ্ধান্ত নেওয়া হয়।


KNN এর কাজ করার প্রক্রিয়া:

  1. ট্রেনিং ডেটা সংগ্রহ (Training Data):
    • প্রথমে, ট্রেনিং ডেটার সাথে ইনপুট এবং আউটপুট লেবেল থাকে (যেমন, ইমেজের জন্য "কুকুর" বা "বিড়াল" লেবেল, বা দাম পূর্বানুমান করা)।
  2. নতুন ডেটা পয়েন্টের সাথে তুলনা (Comparing New Data Point):

    • যখন নতুন একটি ডেটা পয়েন্ট আসে, তখন এটি ট্রেনিং ডেটা পয়েন্টগুলির সাথে তুলনা করা হয়। এই তুলনা করতে ব্যবহৃত হয় এউক্লিডিয়ান দূরত্ব (Euclidean Distance) বা অন্য কোন দূরত্ব পরিমাপ।

    D(x,y)=(x1y1)2+(x2y2)2++(xnyn)2D(x, y) = \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2 + \dots + (x_n - y_n)^2}

    এখানে xx এবং yy হলো দুটি পয়েন্ট, এবং nn হলো বৈশিষ্ট্যের সংখ্যা।

  3. Kটি নিকটতম প্রতিবেশী নির্বাচন (Selecting K Neighbors):
    • K মান নির্বাচন করার পরে (যেমন K=3), এটি ডেটার মধ্যে Kটি নিকটতম প্রতিবেশী খুঁজে বের করে।
  4. নির্ধারণ (Decision Making):
    • ক্লাসিফিকেশন (Classification): যদি এটি একটি ক্লাসিফিকেশন সমস্যা হয়, তবে Kটি নিকটতম প্রতিবেশীর মধ্যে যে ক্লাসের উপস্থিতি সবচেয়ে বেশি, সেটি নতুন পয়েন্টের ক্লাস হিসেবে নির্ধারণ করা হয় (ভোটিং পদ্ধতি)।
      • উদাহরণ: যদি K=3 এবং প্রতিবেশীদের মধ্যে 2টি "কুকুর" এবং 1টি "বিড়াল" থাকে, তবে নতুন পয়েন্টটি "কুকুর" হিসাবে শ্রেণীবদ্ধ হবে।
    • রিগ্রেশন (Regression): যদি এটি একটি রিগ্রেশন সমস্যা হয়, তবে প্রতিবেশীদের আউটপুট গড় (mean) বা গড় মান হিসাবে নেওয়া হয়।
      • উদাহরণ: যদি K=3 এবং প্রতিবেশীদের আউটপুট মান 10, 12, 14 হয়, তবে নতুন পয়েন্টের আউটপুট হবে 10+12+143=12\frac{10 + 12 + 14}{3} = 12

KNN এর বৈশিষ্ট্য

  1. সিম্পল এবং ইনটুইটিভ: KNN অ্যালগরিদমটি সহজ এবং ব্যবহার করতে সহজ, কারণ এটি শুধুমাত্র নিকটতম প্রতিবেশীদের দিকে নজর দেয়।
  2. নন-প্যারামেট্রিক: এটি কোনও আর্গুমেন্ট বা মডেল তৈরি করে না। একে "লেজি লার্নার" বলা হয় কারণ এটি শুধুমাত্র ডেটা দেখা শুরু করে পরবর্তী কাজের সময়।
  3. কোনও হাইপারপ্যারামিটার প্রয়োজন নয়: KNN অ্যালগরিদমটি কেবলমাত্র K এবং দূরত্ব পরিমাপ পদ্ধতি নির্ধারণের উপর নির্ভরশীল।
  4. ডেটার আকারের ওপর প্রভাব: বড় ডেটাসেটের জন্য KNN অ্যালগরিদমটি ধীর হতে পারে, কারণ এটি প্রতিটি নতুন ডেটা পয়েন্টের জন্য সমস্ত ট্রেনিং ডেটা স্ক্যান করে।

KNN এর কিছু সুবিধা এবং অসুবিধা:

সুবিধা:

  • সহজে বাস্তবায়নযোগ্য এবং খুবই সোজা।
  • প্রশিক্ষণের সময় কোনও মডেল তৈরি করতে হয় না।
  • ক্লাসিফিকেশন এবং রিগ্রেশন উভয় ক্ষেত্রেই ব্যবহারযোগ্য।

অসুবিধা:

  • বড় ডেটাসেটের ক্ষেত্রে ধীরগতি।
  • K এর মান নির্বাচন করা প্রয়োজন।
  • ডেটা যদি খুব বেশি মাপের হয় বা অনেক বৈশিষ্ট্য থাকে, তবে KNN কম কার্যকর হতে পারে।
  • যদি ডেটাতে অনেক গোলমাল থাকে, তবে এটি সঠিক ফলাফল দিতে পারে না।

উপসংহার

K-Nearest Neighbors (KNN) একটি সহজ, সরল, এবং শক্তিশালী অ্যালগরিদম, যা ক্লাসিফিকেশন এবং রিগ্রেশন সমস্যাগুলির জন্য কার্যকর। তবে, এর দক্ষতা অনেকাংশে নির্ভর করে K মান এবং ডেটার সঠিক প্রস্তুতির উপর।

Content added By

Distance Metrics (Euclidean, Manhattan)

304

ডিস্ট্যান্স মেট্রিক্স মেশিন লার্নিং এবং ডেটা সায়েন্সে বিভিন্ন পয়েন্ট বা ভেক্টরের মধ্যে দূরত্ব পরিমাপ করতে ব্যবহৃত হয়। এটি বিভিন্ন এলগরিদমে যেমন ক্লাস্টারিং, শ্রেণীবদ্ধকরণ, এবং কনটিনিউয়াস বা ক্যাটেগোরিক্যাল ডেটার মধ্যে সম্পর্ক নির্ধারণে ব্যবহৃত হয়।

এখানে Euclidean Distance এবং Manhattan Distance দুটি প্রচলিত দূরত্ব পরিমাপের পদ্ধতি নিয়ে আলোচনা করা হবে।


১. ইউক্লিডিয়ান ডিস্ট্যান্স (Euclidean Distance)

ইউক্লিডিয়ান ডিস্ট্যান্স হলো দুটি পয়েন্টের মধ্যে সরল (স্ট্রেইট) লাইন দ্বারা পরিমাপিত দূরত্ব, যা পিথাগোরাস থিওরেম এর ভিত্তিতে গণনা করা হয়। এটি সাধারণত দুটি পয়েন্টের মধ্যে সরলরেখার দূরত্ব পরিমাপ করতে ব্যবহৃত হয়।

ফর্মুলা:

এটি সাধারণত দুটি পয়েন্ট P(x1,y1)P(x_1, y_1) এবং Q(x2,y2)Q(x_2, y_2) এর মধ্যে পরিমাপ করা হয়:

d(P,Q)=(x2x1)2+(y2y1)2d(P, Q) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}

এটি দুই মাত্রিক (2D) পয়েন্টের জন্য, তবে তিন বা তার বেশি মাত্রিক পয়েন্টের জন্যও এটি প্রয়োগযোগ্য। 3D বা nn-ডি স্পেসে, ফর্মুলা হবে:

d(P,Q)=i=1n(xiyi)2d(P, Q) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2}

উদাহরণ:

ধরা যাক দুটি পয়েন্ট:

  • পয়েন্ট A (3, 4)
  • পয়েন্ট B (6, 8)

তাদের ইউক্লিডিয়ান ডিস্ট্যান্স হবে:

d(A,B)=(63)2+(84)2=32+42=9+16=25=5d(A, B) = \sqrt{(6 - 3)^2 + (8 - 4)^2} = \sqrt{3^2 + 4^2} = \sqrt{9 + 16} = \sqrt{25} = 5

বৈশিষ্ট্য:

  • এটি সরলরেখার বা "স্ট্রেইট-লাইন" দূরত্ব পরিমাপ করে।
  • সর্বাধিক ব্যবহৃত ডিস্ট্যান্স মেট্রিক্স এবং কনটিনিউয়াস ডেটার জন্য আদর্শ।
  • সাধারণত, কনটিনিউয়াস বা নিরবচ্ছিন্ন বৈশিষ্ট্যের মধ্যে সম্পর্ক নির্ধারণের জন্য ব্যবহার করা হয়।

২. মানহাটান ডিস্ট্যান্স (Manhattan Distance)

মানহাটান ডিস্ট্যান্স হলো দুটি পয়েন্টের মধ্যে অনুভূমিক এবং উল্লম্বভাবে চলার মাধ্যমে পরিমাপিত দূরত্ব, অর্থাৎ এটি কোনো "ব্লক"-এ চলার মতো এবং এটি সোজাসুজি (স্ট্রেইট) চলার পথে নয়, বরং মাত্রিক অক্ষরেখা বরাবর চলার মাধ্যমে পরিমাপ করা হয়। এই পদ্ধতি মূলত গ্রিড বা রাস্তার মতো কাঠামোয় ব্যবহৃত হয় যেখানে পয়েন্ট দুটি একে অপরের প্রতি অনুভূমিক বা উল্লম্বভাবে মাপা হয়।

ফর্মুলা:

তিন বা বেশি মাত্রিক ক্ষেত্রে, দুটি পয়েন্ট P(x1,y1)P(x_1, y_1) এবং Q(x2,y2)Q(x_2, y_2) এর মধ্যে মানহাটান ডিস্ট্যান্সের ফর্মুলা হবে:

d(P,Q)=i=1nxiyid(P, Q) = \sum_{i=1}^{n} |x_i - y_i|

উদাহরণ:

ধরা যাক দুটি পয়েন্ট:

  • পয়েন্ট A (3, 4)
  • পয়েন্ট B (6, 8)

তাদের মানহাটান ডিস্ট্যান্স হবে:

d(A,B)=63+84=3+4=7d(A, B) = |6 - 3| + |8 - 4| = 3 + 4 = 7

বৈশিষ্ট্য:

  • এটি অনুভূমিক এবং উল্লম্ব দূরত্ব পরিমাপ করে, অর্থাৎ পাথের মত চলা হয় (যেমন, রাস্তা ধরে চলা)।
  • এটি যখন ডেটার মধ্যে একাধিক মাত্রার পার্থক্য থাকে, বিশেষত গ্রিডের মধ্যে, তখন অধিক কার্যকরী।
  • কেবলমাত্র সোজা লাইন বা সোজাসুজি চলার ক্ষেত্রে ব্যবহার করা হয় না, বরং কিছু নির্দিষ্ট পাথ অনুসরণ করে পরিমাপ করা হয়।

ইউক্লিডিয়ান এবং মানহাটান ডিস্ট্যান্সের মধ্যে পার্থক্য:

বৈশিষ্ট্যইউক্লিডিয়ান ডিস্ট্যান্সমানহাটান ডিস্ট্যান্স
পথসরলরেখা (স্ট্রেইট লাইন)অনুভূমিক এবং উল্লম্ব (Grid-like)
ফর্মুলাd(P,Q)=(xiyi)2d(P, Q) = \sqrt{\sum (x_i - y_i)^2}( d(P, Q) = \sum
ব্যবহারকনটিনিউয়াস ডেটা, 2D, 3D স্পেসেগ্রিড বা রাস্তা-ভিত্তিক কাঠামো
তুলনামূলকছোট পরিসরে কম দূরত্ব পরিমাপসাধারণত বৃহৎ পরিসরে বেশি দূরত্ব পরিমাপ
প্রয়োগ ক্ষেত্রস্পেস, ভেক্টর স্পেস, সিগনেচাররাস্তা ম্যাপ, শহরের ব্লক, গ্রিডের অবস্থা

উপসংহার:

  • ইউক্লিডিয়ান ডিস্ট্যান্স সাধারণত সোজাসুজি (স্ট্রেইট) পথ পরিমাপের জন্য ব্যবহৃত হয়, যা কনটিনিউয়াস বা নিরবচ্ছিন্ন ডেটার মধ্যে ব্যবহৃত হয়। এটি সিগনেচার, গ্রাফ এবং ভেক্টর স্পেসে ব্যবহার করা হয়।
  • মানহাটান ডিস্ট্যান্স অনুভূমিক এবং উল্লম্ব পথ পরিমাপ করে, এবং এটি গ্রিড ভিত্তিক কাঠামো বা রাস্তার মানচিত্রে ব্যবহৃত হয়।

এগুলো যথাযথভাবে ব্যবহার করা হলে, আপনার মডেল বা অ্যালগরিদম আরো নির্ভুল এবং কার্যকরী হতে পারে।

Content added By

KNN মডেল Train এবং Test করা

356

K-Nearest Neighbors (KNN) হলো একটি জনপ্রিয় সুপারভাইজড লার্নিং অ্যালগরিদম, যা ক্লাসিফিকেশন এবং রিগ্রেশন সমস্যার সমাধানে ব্যবহৃত হয়। KNN মডেলটি একটি ইনপুট পয়েন্টের জন্য তার K নিকটতম প্রতিবেশীকে খুঁজে বের করে এবং তাদের উপর ভিত্তি করে আউটপুট তৈরি করে।

এখানে, KNN মডেল ট্রেন এবং টেস্ট করার একটি সাধারণ পদ্ধতি আলোচনা করা হলো।


KNN মডেল Training এবং Testing পদ্ধতি

ধাপ ১: ডেটা প্রস্তুতি

প্রথমে, আপনাকে ডেটাসেট প্রস্তুত করতে হবে। সাধারণত, একটি ডেটাসেট দুটি ভাগে বিভক্ত করা হয়: ট্রেনিং ডেটা এবং টেস্ট ডেটা

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

# আইরিস ডেটাসেট লোড করা
data = load_iris()
X = data.data  # ইনপুট বৈশিষ্ট্য
y = data.target  # আউটপুট লেবেল

# ডেটা ট্রেনিং এবং টেস্ট ডেটাতে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

ধাপ ২: KNN মডেল তৈরি

এরপর, আপনি KNN মডেল তৈরি করবেন এবং এটি ট্রেনিং ডেটা দিয়ে প্রশিক্ষণ (train) করবেন।

from sklearn.neighbors import KNeighborsClassifier

# KNN মডেল তৈরি (K=3)
knn = KNeighborsClassifier(n_neighbors=3)

# মডেল প্রশিক্ষণ
knn.fit(X_train, y_train)

এখানে, n_neighbors=3 মানে হলো মডেলটি তার নিকটতম ৩টি প্রতিবেশীর ভিত্তিতে সিদ্ধান্ত নেবে।

ধাপ ৩: মডেল টেস্ট

প্রশিক্ষণ সম্পন্ন হওয়ার পর, টেস্ট ডেটা ব্যবহার করে মডেলটির কার্যকারিতা পরীক্ষা করা হয়। এটি মডেলের সঠিকতা (accuracy) বা অন্যান্য মূল্যায়ন স্কোর বের করতে সাহায্য করে।

# মডেল পরীক্ষা করা
accuracy = knn.score(X_test, y_test)

print(f"Test Accuracy: {accuracy * 100:.2f}%")

এটি X_test এবং y_test এর সাথে মডেলটি পরীক্ষিত করে, এবং টেস্ট ডেটাতে সঠিকভাবে কতগুলো আউটপুট অনুমান করেছে তার ভিত্তিতে সঠিকতা গণনা করে।

ধাপ ৪: ভবিষ্যদ্বাণী (Prediction)

মডেল প্রশিক্ষণ এবং পরীক্ষা করা হয়ে গেলে, আপনি নতুন ডেটার উপর ভবিষ্যদ্বাণী করতে পারেন।

# নতুন ডেটার উপর ভবিষ্যদ্বাণী
new_data = [[5.0, 3.4, 1.5, 0.2]]  # উদাহরণ হিসেবে একটি নতুন ইনপুট

prediction = knn.predict(new_data)
print(f"Predicted class: {prediction[0]}")

এখানে, আমরা new_data দিয়ে ভবিষ্যদ্বাণী করছি এবং মডেলটি কোন শ্রেণী (class) নির্ধারণ করেছে তা দেখাচ্ছে।


KNN মডেল ট্রেনিং এবং টেস্টের সারাংশ

  1. ডেটা প্রস্তুতি: ডেটা ট্রেনিং এবং টেস্ট ডেটাতে ভাগ করা।
  2. KNN মডেল তৈরি: KNeighborsClassifier ব্যবহার করে KNN মডেল তৈরি করা।
  3. মডেল প্রশিক্ষণ: fit() মেথড দিয়ে ট্রেনিং ডেটা দিয়ে মডেল প্রশিক্ষণ করা।
  4. মডেল পরীক্ষা: score() মেথড দিয়ে টেস্ট ডেটার উপর মডেলের কার্যকারিতা পরীক্ষা করা।
  5. ভবিষ্যদ্বাণী: predict() মেথড দিয়ে নতুন ডেটার উপর ভবিষ্যদ্বাণী করা।

এই পদ্ধতিটি KNN মডেল ট্রেন এবং টেস্ট করার একটি মৌলিক উদাহরণ। KNN মডেলটি সহজে কাজ করে এবং তার কর্মক্ষমতা নির্ভর করে ডেটার গুণগত মান এবং নির্বাচিত K মানের উপর।

Content added By

Model Tuning এবং Hyperparameter Optimization

262

মডেল টিউনিং এবং হাইপারপ্যারামিটার অপটিমাইজেশন মেশিন লার্নিং মডেলগুলির কার্যকারিতা উন্নত করার জন্য অত্যন্ত গুরুত্বপূর্ণ পদক্ষেপ। সঠিকভাবে মডেল টিউনিং এবং হাইপারপ্যারামিটার অপটিমাইজেশন করার মাধ্যমে আপনি আপনার মডেলটি আরও সঠিক এবং কার্যকরী করতে পারেন।


১. মডেল টিউনিং (Model Tuning)

মডেল টিউনিং হল সেই প্রক্রিয়া যার মাধ্যমে মডেলটির গুণগত মান এবং কার্যক্ষমতা বৃদ্ধি করার জন্য মডেলের প্যারামিটারগুলিকে সমন্বয় করা হয়। মডেল টিউনিংয়ের মাধ্যমে মডেলটি বিভিন্ন পরিস্থিতিতে আরও ভাল পারফর্ম করতে সক্ষম হয়।

মডেল টিউনিং প্রক্রিয়া:

  • নির্বাচিত অ্যালগরিদমের প্যারামিটার সমন্বয়: আপনার মডেলটির জন্য সঠিক অ্যালগরিদম নির্বাচন করা এবং তার প্যারামিটারগুলো অপটিমাইজ করা।
  • অ্যালগরিদমের ক্ষমতা বাড়ানো: কিছু অ্যালগরিদম বিশেষভাবে কিছু ধরনের ডেটার জন্য ভালো ফল দেয়, তাই সেগুলি বেছে নেয়া।
  • ক্রস-ভ্যালিডেশন ব্যবহার: মডেলের প্রশিক্ষণ ডেটা, পরীক্ষা ডেটা এবং অন্যান্য প্যারামিটারসমূহের উপর ভিত্তি করে আউটপুট পর্যালোচনা করা।

মডেল টিউনিংয়ের উপায়:

  • এনসেম্বল মেথড (Ensemble Methods): একাধিক মডেল একত্রিত করে কাজ করার পদ্ধতি। যেমন, Random Forest, Gradient Boosting Machines (GBM) ইত্যাদি।
  • ক্রস-ভ্যালিডেশন (Cross-validation): মডেলের প্রশিক্ষণ এবং টেস্ট ডেটার মধ্যে ভারসাম্য তৈরি করতে ক্রস-ভ্যালিডেশন ব্যবহার করা হয়।
  • ফিচার সিলেকশন (Feature Selection): মডেলের পারফরম্যান্স বাড়ানোর জন্য অপ্রয়োজনীয় বা অত্যধিক ফিচার বাদ দেওয়া।
  • প্রতিটি মডেলের শর্তাবলী পরীক্ষা: যেমন, লজিস্টিক রিগ্রেশন, SVM, RF বা ডিপ লার্নিং এর জন্য প্রতিটি মডেল এটির নিজস্ব প্যারামিটার রয়েছে যা শর্ত অনুযায়ী টিউন করা যায়।

২. হাইপারপ্যারামিটার অপটিমাইজেশন (Hyperparameter Optimization)

হাইপারপ্যারামিটার অপটিমাইজেশন হল সেই প্রক্রিয়া যেখানে মডেল তৈরি করার সময় যে প্যারামিটারগুলো সেট করা হয়, যেমন মডেলের শিখন হার (learning rate), সংখ্যা of hidden layers, অথবা ট্রি-ডিপথ (tree depth) ইত্যাদি, তাদের সঠিক মান নির্ধারণ করা হয়।

এই প্রক্রিয়ায়, আমরা মডেলের হাইপারপ্যারামিটারগুলোকে একটি সম্ভাব্য মানের পরিসরে অনুসন্ধান করি, যাতে মডেলটির পারফরম্যান্স সর্বোচ্চ হয়।

হাইপারপ্যারামিটার অপটিমাইজেশন পদ্ধতি:

  1. গ্রিড সার্চ (Grid Search):

    • এটি সবচেয়ে সাধারণ পদ্ধতি, যেখানে নির্দিষ্ট প্যারামিটারগুলির একটি গ্রিড (grid) তৈরি করা হয় এবং প্রতিটি প্যারামিটার সমন্বয়ে সমস্ত সম্ভাব্য কনফিগারেশন পরীক্ষা করা হয়।
    • উদাহরণ: যদি আপনি একটি সাপোর্ট ভেক্টর মেশিন (SVM) মডেল তৈরি করেন, তবে আপনি C (penalty parameter) এবং gamma (kernel parameter) এর জন্য বিভিন্ন মান নির্ধারণ করবেন এবং তাদের প্রতি পরীক্ষার মাধ্যমে সেরা মডেল নির্বাচন করবেন।

    ফর্মুলা:

    Best Model=argminParametersCross-validation error\text{Best Model} = \arg \min_{\text{Parameters}} \text{Cross-validation error}

  2. র্যান্ডম সার্চ (Random Search):
    • গ্রিড সার্চের চেয়ে দ্রুত এবং কার্যকরী পদ্ধতি যেখানে মডেলটির প্যারামিটারগুলির বিভিন্ন সেটের মধ্যে র্যান্ডম মান নির্বাচন করা হয়।
    • এই পদ্ধতি অনেক বড় প্যারামিটার স্পেসে কাজ করার জন্য উপযুক্ত, এবং এটি অনেক সময়ের মধ্যে দ্রুত ফলাফল প্রদান করতে পারে।
  3. বায়োস (Bayesian Optimization):
    • এটি একটি উন্নত অপটিমাইজেশন পদ্ধতি, যেখানে পূর্ববর্তী হাইপারপ্যারামিটার পরীক্ষার ফলাফল থেকে শিক্ষা নেওয়া হয় এবং ভবিষ্যতের পরীক্ষাগুলির জন্য সম্ভাব্য হাইপারপ্যারামিটার পরামর্শ দেয়।
    • Gaussian Process এবং অন্যান্য মেটাডেটার ব্যবহার করে সম্ভাব্য ভালো প্যারামিটার সমন্বয় আগে থেকেই অনুমান করা হয়।
  4. হাইপারপ্যারামিটার টিউনিং এর জন্য আলগোরিদম:
    • Random Forests, Gradient Boosting Machines (GBM), XGBoost: এই মডেলগুলোতে বিভিন্ন প্যারামিটার যেমন learning rate, max_depth, n_estimators ইত্যাদি হাইপারপ্যারামিটার হিসেবে অপটিমাইজ করা যায়।
    • Deep Learning: নিউরাল নেটওয়ার্ক মডেলের batch size, learning rate, number of epochs, dropout rate ইত্যাদি অপটিমাইজ করা যায়।

হাইপারপ্যারামিটার অপটিমাইজেশনে গুরুত্বপূর্ণ প্যারামিটারসমূহ:

  1. Learning Rate: মডেলটি শিখতে কতটা দ্রুত এগিয়ে যাবে তা নির্ধারণ করে। খুব কম learning rate মডেলকে ধীর করে দিতে পারে, আবার খুব বেশি learning rate মডেলটি অস্থির বা অযথা হতে পারে।
  2. Number of Estimators: (যেমন, RF বা GBM এর ক্ষেত্রে) এটির মান মডেলের গতি এবং accuracy-তে প্রভাব ফেলে।
  3. Batch Size: ডিপ লার্নিং মডেলের ক্ষেত্রে একটি হাইপারপ্যারামিটার, যা প্রতি ব্যাচে কতগুলো ডেটা পয়েন্ট ব্যবহার করা হবে তা নির্ধারণ করে।
  4. Max Depth: Decision Tree বা Random Forest এর ক্ষেত্রে, এটি ট্রী এর গভীরতা নিয়ন্ত্রণ করে, যা মডেলের জটিলতা নির্ধারণ করে।
  5. Regularization Parameters (L1/L2): মডেলের overfitting কমানোর জন্য ব্যবহৃত হয়।

উপসংহার

  • মডেল টিউনিং এবং হাইপারপ্যারামিটার অপটিমাইজেশন মেশিন লার্নিং মডেলের কার্যক্ষমতা বৃদ্ধিতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
  • সঠিকভাবে অপটিমাইজ করা হলে, মডেলটি দ্রুত, নির্ভুল এবং আরও শক্তিশালী হয়ে ওঠে।
  • গ্রিড সার্চ, র্যান্ডম সার্চ, এবং বায়োস অপটিমাইজেশন পদ্ধতিগুলি হাইপারপ্যারামিটার অপটিমাইজেশনের জন্য সাধারণভাবে ব্যবহৃত হয়।
  • সঠিক প্যারামিটার নির্বাচন মডেলের ভবিষ্যত কার্যকারিতা এবং সিদ্ধান্তের দক্ষতা উন্নত করতে সাহায্য করে।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...